home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / BBS-Archive / Comm / AmiTCP30b2.lha / src / util / finger / finger.h < prev    next >
C/C++ Source or Header  |  1994-02-24  |  5KB  |  145 lines

  1. /* $Id: finger.h,v 6.5 1994/02/21 19:30:06 ppessi Exp $
  2.  *
  3.  * finger.h
  4.  *
  5.  * Copyright © 1993 AmiTCP/IP Group, <AmiTCP-group@hut.fi>
  6.  *                  Helsinki University of Technology, Finland.
  7.  *
  8.  * This program is derived from original work distributed in BSD Net 2.
  9.  *
  10.  * Created      : Fri Oct 15 01:29:07 1993 ppessi
  11.  * Last modified: Mon Feb 21 03:06:58 1994 ppessi
  12.  *
  13.  * $Log: finger.h,v $
  14.  * Revision 6.5  1994/02/21  19:30:06  ppessi
  15.  * Removed tty field. Real release 2.
  16.  *
  17.  * Revision 6.4  1994/02/15  14:56:43  ppessi
  18.  * Added utmp support
  19.  *
  20.  * Revision 6.3  1994/01/21  13:36:53  ppessi
  21.  * Added match() prototype, include <utmp.h>
  22.  *
  23.  * Revision 6.2  93/10/15  03:00:47  ppessi
  24.  * Minor changes due sprint.c
  25.  * 
  26.  */
  27.  
  28. /*
  29.  * Copyright (c) 1989 The Regents of the University of California.
  30.  * All rights reserved.
  31.  *
  32.  * This code is derived from software contributed to Berkeley by
  33.  * Tony Nardo of the Johns Hopkins University/Applied Physics Lab.
  34.  *
  35.  * Redistribution and use in source and binary forms, with or without
  36.  * modification, are permitted provided that the following conditions
  37.  * are met:
  38.  * 1. Redistributions of source code must retain the above copyright
  39.  *    notice, this list of conditions and the following disclaimer.
  40.  * 2. Redistributions in binary form must reproduce the above copyright
  41.  *    notice, this list of conditions and the following disclaimer in the
  42.  *    documentation and/or other materials provided with the distribution.
  43.  * 3. All advertising materials mentioning features or use of this software
  44.  *    must display the following acknowledgement:
  45.  *    This product includes software developed by the University of
  46.  *    California, Berkeley and its contributors.
  47.  * 4. Neither the name of the University nor the names of its contributors
  48.  *    may be used to endorse or promote products derived from this software
  49.  *    without specific prior written permission.
  50.  *
  51.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  52.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  53.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  54.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  55.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  56.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  57.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  58.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  59.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  60.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  61.  * SUCH DAMAGE.
  62.  *
  63.  *    @(#)finger.h    5.5 (Berkeley) 6/1/90
  64.  */
  65.  
  66. #include <pwd.h>
  67. #include <time.h>
  68. #include <utmp.h>
  69.  
  70. #ifndef UT_NAMESIZE
  71. #define UT_NAMESIZE 16
  72. #endif
  73. #ifndef UT_LINESIZE
  74. #define UT_LINESIZE 16
  75. #endif
  76. #ifndef UT_HOSTSIZE
  77. #define UT_HOSTSIZE 32
  78. #endif
  79.  
  80. /*
  81.  * All unique persons are linked in a list headed by "head" and linkd
  82.  * by the "next" field, as well as kept in a hash table.
  83.  */
  84.  
  85. typedef struct person {
  86.   struct person *next;        /* link to next person */
  87.   struct person *hlink;        /* link to next person in hash bucket */
  88.   uid_t uid;            /* user id */
  89.   char *dir;            /* user's home directory */
  90.   char *homephone;        /* pointer to home phone no. */
  91.   char *name;            /* login name */
  92.   char *office;            /* pointer to office name */
  93.   char *officephone;        /* pointer to office phone no. */
  94.   char *realname;        /* pointer to full name */
  95.   char *shell;            /* user's shell */
  96.   struct where *whead, *wtail;    /* list of where he is or has been */
  97. } PERSON;
  98.  
  99. enum status { LASTLOG, LOGGEDIN };
  100.  
  101. typedef struct where {
  102.   struct where *next;        /* next place he is or has been */
  103.   enum status info;        /* type/status of request */
  104.   short writable;        /* tty is writable */
  105.   time_t loginat;        /* time of (last) login */
  106.   time_t idletime;        /* how long idle (if logged in) */
  107. #ifdef HAVE_TTY
  108.   char tty[UT_LINESIZE+1];    /* null terminated tty line */
  109. #endif
  110.   char host[UT_HOSTSIZE+1];    /* null terminated remote host name */
  111. } WHERE;
  112.  
  113. WHERE *walloc(register PERSON *);
  114.  
  115. #define    HBITS    8        /* number of bits in hash code */
  116. #define    HSIZE    (1 << 8)    /* hash table size */
  117. #define    HMASK    (HSIZE - 1)    /* hash code mask */
  118.  
  119. extern PERSON *htab[HSIZE];    /* the buckets */
  120. extern PERSON *phead, *ptail;    /* the linked list of all people */
  121.  
  122. extern int entries;        /* number of people */
  123.  
  124. int match(struct passwd *pw, char *user);
  125. #define strcasecmp stricmp
  126.  
  127. PERSON 
  128.   *enter_person(register struct passwd *pw), 
  129.   *find_person(char *name),
  130.   *palloc(void);
  131.  
  132. void enter_where(struct utmp *ut, PERSON *pn);
  133. void enter_lastlog(register PERSON *pn);
  134.  
  135. char * prphone(char *num);
  136. void userinfo( register PERSON *pn, register struct passwd *pw);
  137.  
  138. void lflag_print(void);
  139. void sflag_print(void);
  140.  
  141. void netfinger(char *name);
  142.  
  143. extern char tbuf[1024];        /* temp buffer for anybody */
  144.  
  145.